---
title: clsNonEmployerAccount
summary: API reference for clsNonEmployerAccount.
status: draft
owner: SAIF Corporation
last_reviewed: 2026-08-21
library: SAIF.Business.View.Policy
reference_type: embedded
---

# clsNonEmployerAccount

`clsNonEmployerAccount` is the read-only header lookup for non-employer accounts referenced from policy-view workflows. It retrieves one row directly from `NON_EMPR_ACCT`, exposes the account's identifying and mailing/contact values, and rejects zero-valued account requests through [BR-VP-002](../../business-rules.md#br-vp-002-non-employer-account-number-must-not-be-zero) before the retrieve proceeds.

## Purpose
- Retrieve one non-employer account header row from `NON_EMPR_ACCT` by account number.
- Expose the account name, address, phone, and update metadata needed by callers that display or verify the account.
- Enforce [BR-VP-002](../../business-rules.md#br-vp-002-non-employer-account-number-must-not-be-zero) so a zero account number is treated as invalid input.

## Context
- Namespace: `SAIF.Business.View.Policy`
- Assembly/package: `SAIF.Business.View.Policy` (embedded)

## Public members
| Member | Signature | Purpose |
| --- | --- | --- |
| `MaxNonEmployerAccountNumber` | `Public Const MaxNonEmployerAccountNumber As Integer = 17` | Defines the documented maximum account-number length used by callers validating or formatting non-employer account identifiers.* |
| `AccountNumber` | `Public ReadOnly Property AccountNumber() As Decimal` | Returns the non-employer account number loaded from `NON_EMPR_ACCT`. |
| `Name` | `Public ReadOnly Property Name() As String` | Returns the account name tied to the retrieved number. |
| `UpdateSeqNum` | `Public ReadOnly Property UpdateSeqNum() As Decimal` | Carries the row's update sequence value for concurrency or audit display. |
| `UpdateUser` | `Public ReadOnly Property UpdateUser() As String` | Identifies the last updater recorded on the account row. |
| `UpdateDate` | `Public ReadOnly Property UpdateDate() As Date` | Gives the timestamp of the last update recorded on the account row. |
| `AddressLine1` | `Public ReadOnly Property AddressLine1() As String` | Returns the first address line stored for the account. |
| `AddressLine2` | `Public ReadOnly Property AddressLine2() As String` | Returns the second address line stored for the account. |
| `CityName` | `Public ReadOnly Property CityName() As String` | Returns the city recorded for the account mailing address. |
| `StateCode` | `Public ReadOnly Property StateCode() As String` | Returns the state code recorded for the account mailing address. |
| `ZipCode` | `Public ReadOnly Property ZipCode() As String` | Returns the postal ZIP code recorded for the account. |
| `ZipCodeExtension` | `Public ReadOnly Property ZipCodeExtension() As String` | Returns the ZIP extension when one is stored on the account row. |
| `PhoneNumber` | `Public ReadOnly Property PhoneNumber() As String` | Returns the phone number stored for the account. |
| `MyCriteria` | `Public ReadOnly Property MyCriteria() As Criteria` | Exposes the criteria object that supplies the account number and SQL statement to the retrieve pipeline. |
| `IsAddressLine1Null` | `Public Function IsAddressLine1Null() As Boolean` | Reports whether the first address line was empty in the retrieved row. |
| `IsAddressLine2Null` | `Public Function IsAddressLine2Null() As Boolean` | Reports whether the second address line was empty in the retrieved row. |
| `IsCityNameNull` | `Public Function IsCityNameNull() As Boolean` | Reports whether the city field was empty in the retrieved row. |
| `IsStateCodeNull` | `Public Function IsStateCodeNull() As Boolean` | Reports whether the state field was empty in the retrieved row. |
| `IsZipCodeNull` | `Public Function IsZipCodeNull() As Boolean` | Reports whether the ZIP code field was empty in the retrieved row. |
| `IsZipCodeExtensionNull` | `Public Function IsZipCodeExtensionNull() As Boolean` | Reports whether the ZIP extension field was empty in the retrieved row. |
| `IsPhoneNumberNull` | `Public Function IsPhoneNumberNull() As Boolean` | Reports whether the phone number field was empty in the retrieved row. |
| `Equals` | `Public Overloads Shared Function Equals(ByVal objA As Object, ByVal objB As Object) As Boolean` | Compares two boxed account objects using account-number identity. |
| `Equals` | `Public Overloads Overrides Function Equals(ByVal inObject As Object) As Boolean` | Applies the account-number equality rule to an arbitrary object. |
| `Equals` | `Public Overloads Function Equals(ByVal inObject As clsNonEmployerAccount) As Boolean` | Treats two account objects as equal when they carry the same account number. |
| `GetHashCode` | `Public Overrides Function GetHashCode() As Integer` | Produces a hash based on the account number used by equality. |
| `GetNonEmployerAccount` | `Public Shared Function GetNonEmployerAccount(ByVal inDataportal As IDataPortalInfo, ByVal inAccountNumber As Decimal) As clsNonEmployerAccount` | Retrieves one non-employer account through the data portal. |
| `AccountNumber` | `Public Property AccountNumber() As Decimal` | Stores the requested account number inside the nested criteria object. |
| `RetrieveSQL` | `Friend ReadOnly Property RetrieveSQL() As String` | Supplies the inline `SELECT` over `NON_EMPR_ACCT` that loads this object. |

## Behavioral notes
- `BeforeRetrieve` sends the requested account number as `:AccountNumber` to the inline `SELECT` over `NON_EMPR_ACCT`, and `AfterRetrieve` fills the object from the first returned row.
- `AddBusinessRules` registers `IsValidAccountNumber`, which returns false when `AccountNumber = 0`, enforcing [BR-VP-002](../../business-rules.md#br-vp-002-non-employer-account-number-must-not-be-zero).
- The `Load` helper rebuilds criteria from the current object's account number before marking the object old, which keeps the retrieved instance tied to its source key for later framework operations.*

## Constraints and usage notes
- Persistence operations are invalid here: create/insert/update/delete SQL all throw `InvalidSQLProperty`, matching the library-wide read-only rule in [BR-VP-027](../../business-rules.md#br-vp-027-createinsertupdatedelete-sql-are-invalid).
- This page intentionally omits inherited members because `clsBusinessBase` is external to this embedded-library documentation set.

> **Note:** Statements marked with * were inferred from code structure, naming conventions, or
> contextual evidence where direct confirmation was not available in source artifacts. Statements
> marked with ** could not be confirmed; treat as unknown until verified.

## Sources
- `SAIF.Business.View.Policy/clsNonEmployerAccount.vb`
